package com.smforj.ssm.modules.wc.service;

import com.smforj.ssm.frame.core.web.domain.DataResult;
import com.smforj.ssm.modules.lib.domain.LoginUser;
import com.smforj.ssm.modules.lib.domain.SysBook;
import com.smforj.ssm.modules.lib.domain.SysReader;
import com.smforj.ssm.modules.lib.domain.Terminal;
import com.smforj.ssm.modules.lib.domain.vo.SysBookVo;


/***
 *  图书业务处理对象  该接口主要全用于微信等终端
 *  
 *  包含
 *  1、图书查询
 *  2、借阅
 *  3、归还
 *  4、续借
 *  5、查询借阅信息  
 * 
 * @author Haijun Gao 
 * @date 2016-8-1 下午2:14:04
 * @desp http://www.cnblogs.com/saga5998/
 * @email 573107773@qq.com
 */
public interface BusinessService extends AppletService{ 

	/***
	 * 根据code 查询图书信息
	 * @param code 图书名称或id
	 * @return
	 * @date 2016-8-1 下午2:29:45
	 */
	SysBookVo getBookInfo(String code);
	
	/***
	 * 根据条件查询图书信息
	 * @param entity 图书对象
	 * @return
	 * @date 2016-8-6 下午3:24:36
	 */
	SysBook getBookInfo(SysBook entity);
	
	/****
	 *  根据用户信息 与 bookid 进行借阅操作  该方法与图书管理软件交互
	 * @param reader 用户信息
	 * @param bookid 图书信息barcode 或id
	 * @return
	 * @date 2016-8-18 下午1:55:26
	 */
	DataResult doCheckOut(SysReader reader,String bookid);
	
	/***
	 * 借阅 
	 * 注：该方法不与图书管理软件交互仅进行金至图书软件
	 * @param book 图书信息
	 * @return
	 * @date 2016-8-1 下午2:31:57
	 */
	DataResult doBorrowBook(SysBookVo book,Terminal terminal,LoginUser user); 
	
	
	/***
	 * 归还 controller 调用 该方法与图书管理软件交互
	 * @param reader
	 * @param bookid
	 * @return Result
	 * @date 2016-9-2 上午11:29:02
	 */
	DataResult doCheckIn(SysReader reader,String bookid);
	/***
	 * 归还
	 * 注：该方法不与图书管理软件交互仅进行金至图书软件
	 * @param book 图书信息  
	 * @return Result
	 * @date 2016-8-1 下午2:33:09
	 */
	DataResult doReturnBook(SysBookVo book,Terminal terminal,LoginUser user);
	
	
	/****
	 *  根据用户信息 与 bookid 进行续借操作
	 * @param reader 用户信息
	 * @param bookid 图书信息barcode 或id
	 * @return
	 * @date 2016-8-18 下午1:55:26
	 */
	DataResult doRenew(SysReader reader,String bookid);
	/***
	 * 续借
	 * @param book 图书信息
	 * @return
	 * @date 2016-8-1 下午2:33:16
	 */
	DataResult doRenewBook(SysBookVo book,Terminal terminal,LoginUser user);
	
	
	/***
	 * 查询借阅信息 
	 * @param openId 微信号
	 * @return Result status==OK 成功message 为CoreCurrentRecord的list status==ERROR 为错误信息
	 * @date 2016-8-6 下午4:04:49
	 */
	DataResult doQuery(String openId);
	
	/***
	 * 查询借阅信息
	 * @param terminal 终端信息
	 * @param user 用户信息
	 * @return Result status==OK 成功message 为CoreCurrentRecord的list status==ERROR 为错误信息
	 * @date 2016-8-6 下午4:04:49
	 */
	DataResult doQuery(Terminal terminal,LoginUser user);
	
	/***
	 * 添加微信用户 会判断是否已经存在
	 * @param reader
	 * @return
	 * @date 2016-8-18 下午4:41:01
	 */
	DataResult addWechatUser(SysReader reader,String openId); 
}
